//package com.sm.config;
//
//import cn.hutool.crypto.SecureUtil;
//import com.sm.rag.MyKeywordEnricher;
//import com.sm.rag.SmAppDocumentLoader;
//import jakarta.annotation.PostConstruct;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.ai.document.Document;
//import org.springframework.ai.reader.TextReader;
//import org.springframework.ai.vectorstore.VectorStore;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.core.io.Resource;
//import org.springframework.data.redis.core.RedisTemplate;
//
//import java.nio.charset.Charset;
//import java.util.List;
//
//@Slf4j
//@Configuration
//public class InitVectorDatabaseConfig {
//    @Autowired
//    private VectorStore vectorStore;
//
//    @Autowired
//    private RedisTemplate<String, String> redisTemplate;
//
//    @Value("classpath:document/星座.md")
//    private Resource mdFile;
//    @Autowired
//    private SmAppDocumentLoader smAppDocumentLoader;
//
//    @Autowired
//    private MyKeywordEnricher myKeywordEnricher;
//
//
//    @PostConstruct
//    public void init() {
//        // 1. 读取文件
//        TextReader textReader = new TextReader(mdFile);
//        textReader.setCharset(Charset.defaultCharset());
//
////        myKeywordEnricher.enrichDocuments(mdFile)
//
//        List<Document> documents = smAppDocumentLoader.loadMarkdowns();
//
//        // 3. 使用RedisSetNX去重，进行去重操作
//        removeDuplicateByRedis(textReader, documents);
//    }
//
//    private void removeDuplicateByRedis(TextReader textReader, List<Document> list) {
//        String sourceMetadata = (String) textReader.getCustomMetadata().get("source");
//        System.out.println("**********: " + sourceMetadata);
//
//        String textHash = SecureUtil.md5(sourceMetadata);
//        String redisKey = "vector-XXX:" + textHash;
//        System.out.println("**********redisKey: " + redisKey);
//        //判断是否存在
//        Boolean existOK = redisTemplate.opsForValue().setIfAbsent(redisKey, "1");
//        if (Boolean.TRUE.equals(existOK)) {
//            //键不存在，保存向量数据
//
//            vectorStore.add(list);
//        } else {
//            //键已存在，跳过或报错
////            throw new RuntimeException("重复数据");
//            log.info("重复数据");
//        }
//    }
//}
